#include <stdio.h>
#include <malloc.h>
#include "sqList.h"
int step = 0;
// 删除顺序表中所有 =x元素
void remove_x(SeqList * L,int x) {
    int k = 0; //用k标记 !=x的元素
    for(int i = 0; i < L->Lenght; ++i) {
        if(L->data[i] != x) { // 如果这个元素 !=x 就将其放到k的位置
            L->data[k] = L->data[i];
            k++;  //k后移一位
        }
    }
    L->Lenght = k;
}
// 删除表中 大于x 小于y的数据
bool remove_XtoY(SeqList *L,int x,int y){
    if(x>y) {
        printf("you input Error\n");
        return false;
    }if(L->Lenght ==0) {
        printf("The list is Empty\n");
        return false;
    }
    int k = 0;
    for(int i = 0; i <L->Lenght ; ++i) {
        if(L->data[i] <= x || L->data[i] >= y) {
            L->data[k] = L->data[i];
            step ++;
            k ++;
        }
    }
    L->Lenght = k;
    return true;
}
// 删除表中 大于x 小于y的数据 v1
bool remove_XtoY_v1(SeqList *L,int x,int y){
    if(x>y) {
        printf("you input Error\n");
        return false;
    }if(L->Lenght ==0) {
        printf("The list is Empty\n");
        return false;
    }
    int k = 0;
    for(int i = 0; i <L->Lenght ; ++i) {
        if(L->data[i] > x && L->data[i] < y)
            // L->data[k] = L->data[i];
            k ++;
        else if(k > 0){
        // else {
            L->data[i-k] = L->data[i];
            step++;
        }
    }
    L->Lenght -= k;
    return true;
}
// 删除 顺序表中所有相同元素
bool removeSame(SeqList *L){
    if(L->Lenght == 0) {
        printf("removeSame:Error Empty\n");
        return false;
    }
    int k=1;
    int a=L->data[0];
    for(int i = 1; i < L->Lenght; ++i) {
        if(a != L->data[i]) {
            a = L->data[i];
            L->data[k] =L->data[i];
            step++;
            k++;
        }
    }
    L->Lenght = k;
    return true;
}
// 删除 顺序表中所有相同元素
bool removeSame_v1(SeqList *L){
    if(L->Lenght == 0) {
        printf("removeSame:Error Empty\n");
        return false;
    }
    int i,j;
    for(i=0,j=1;j<L->Lenght;j++){
        if(L->data[i]!=L->data[j]) {
            L->data[++i] =L->data[j];
            step++;
        }
    }
    L->Lenght = i+1;
    return true;
}
// 求两个升序列的 中位数
int median_a_b(SeqList * a,SeqList * b) {
    int i=0,j=0;
    int k;
    int mid ;
    int len = a->Lenght + b->Lenght;
    for(k = 0; k <= len/2; k++ ) {
        if(a->data[i] < b->data[j])
            mid = a->data[i++] ;
        else
            mid = b->data[j++] ;
    }
    return mid;
}
int main() {
    SeqList a,b;
    InitList(&a);
    InitList(&b);
    int aLen,bLen,tData;
    // 输入重定向
    freopen("listData.in", "r", stdin);
    scanf("%d %d",&aLen,&bLen);

    for(int i = 0; i < aLen; ++i) {
        scanf("%d",&tData);
        listAppend(&a,tData);
    }
    for(int i = 0; i < bLen; ++i) {
        scanf("%d",&tData);
        listAppend(&b,tData);
    }
    printList(&a);
    printList(&b);
    printf("%d\n",median_a_b(&a,&b));
    fclose(stdin);
    return 0;
}